Grundkurs SQL

2.6  CROSS JOIN

Der CROSS JOIN ist in der Praxis weitgehend bedeutungslos – wir sehen gleich warum – er wird hier nur der Vollständigkeit halber erwähnt.

Wir nehmen dazu erneut unser Beispiel aus Kapitel 2.3. Dort hatten wir den Versuch unternommen, die WHERE-Zeile zu entfernen. Die Anweisung lautete dann:

SELECT vorname, name, abteilungsname
FROM   tbl_abteilung, tbl_mitarbeiter

Genau das nennt man einen CROSS JOIN. Dabei wird jeder Datensatz der einen Tabelle mit jedem Datensatz der anderen Tabelle verknüpft – jeder Mitarbeiter erhält somit alle Abteilungen der ganzen Tabelle zugeordnet. Man nennt dies auch das Kreuzprodukt (cross = engl.: Kreuz) zweier Tabellen - was in diesem, wie auch in vielen anderen praktischen Anwendungsfällen eine völlig unsinnige Aussage liefert in speziellen Fällen aber durchaus seine Berechtigung hat.

Lassen wir hier das Komma weg und schreiben dafür das Schlüsselwort CROSS JOIN!

SELECT vorname, name, abteilungsname
FROM   tbl_abteilung
       CROSS JOIN tbl_mitarbeiter

Wie Sie sehen, erhalten wir das gleiche Ergebnis.

Probieren Sie die Abfragen in phpMyAdmin aus. Experimentieren Sie auch mit den verschiedenen JOIN-Arten herum. Schauen Sie sich immer die Ergebnismenge kritisch an. Eine unbedacht formulierte SQL-Abfrage kann zu unerwünschten Ergebnissen führen.